Computer-enabled graphical editing systems are used in a wide variety of different applications and industries to view and edit different types of visual images on computer systems or other electronic devices. One common application is electronic design automation, including such applications as layout design, in which the circuit structures for components and spatial layout of electronic components such as transistors, integrated circuits and circuit boards are viewed, created and edited using displayed images. Another application is schematic design, in which symbols represent the components of the electronic design and are connected with other components. Various graphical application software is available to provide the display and editing functions for layout and schematic designs.
Custom graphical design, including both schematic design and layout design, involves mostly manual work. Hence, designer productivity is a key factor in design and productivity comparison is an important benchmark in graphical application evaluations. For example, designers often need to perform repetitive design edits to incorporate a specific design intent change, or to perform design correction. One example of such design edits and changes include searching out every occurrence of a transistor with particular dimensions and then increasing the poly end-cap by 2 microns for all of the transistors. Another example is detecting an aberration of a structure of specific dimensions on a Metal-3 layer for every occurrence of the structure and then correcting each of occurrence with a specific correction. Another example is increasing the magnification factor and finger width (which is the effective transistor gate width that determines transistor characteristics) by two for every schematic device that matches certain criteria and schematic properties. Generally, the designer's intent is to search for every occurrence of a specific schematic or layout object that has a particular property or other characteristic. A specific modification, correction, or replacement is then desired to be applied to all of the found occurrences.
Currently, there are two ways to perform these searching and editing tasks. The first way is to perform the searching and editing in a completely manual fashion. Due to the many instances and corrections in a large design, manual performance can therefore take days to perform. In addition, manual performance is typically highly error-prone due to the high degree of searching and large number of corrections required. The other way to perform the tasks is to write a program to automate the tasks. For example, the SKILL programming language can be used to create a program that will perform searches and edits of instances of a design. However, most graphical designers are not skilled at programming, and since programmers who can perform such tasks are usually unavailable, and since there are no graphical or other tools to make program creation simpler, the designers revert to using the time-consuming and tedious manual approach in the vast majority of cases.
In some cases, other software can be used to find a problem in a design that needs correcting, e.g., design portions that violate layout rules or other rules, but a designer would have to manually fix each problem found. Furthermore, even if a designer is able to program code to perform the tasks, coding such tasks and validating results is difficult and time consuming. In other particular cases, an existing CAD software tool such as “Éclair” can be used in layout designs to perform a structural search (not editing), but only in layout designs and not any other types of designs, and it is limited to only structural searches of physical dimensions of shapes and a restrictive type of structural tolerance search (only a single, one-way tolerance of all edges of a layout shape). In addition to these restrictions, existing tools like Éclair require involved manipulation of non-graphical input and output data files and programs by the user to create search patterns and provide results. Furthermore, the designer is required to manually fix each problem found. In any case, the designer is losing significant productivity when performing tasks of searching for and/or changing particular design objects with the limited existing tools.